export default {
  // 命名空间
  namespaced: true,
  state: {
    // 购物车数组
    cartList: uni.getStorageSync("cartList") || []

  },
  getters: {
    // 已经选中的商品 数组
    checkedCartList(state) {
      return state.cartList.filter(item => item.checked === true);
    },
    // 要支付的商品的总价格 checkedPrice
    checkedPrice(state, getters) {
      return getters.checkedCartList.reduce((price, item) => price += item.nums * item.goods_price, 0);
    },

    // 要支付的商品的总数量 checkedCount
    checkedCount(state, getters) {
      return getters.checkedCartList.reduce((count, item) => count += item.nums, 0);
    }

  },
  mutations: {
    // 给购物车 新增商品元素 payload={value:要添加的商品对象}
    cartAdd(state, payload) {
      // 判断当前商品是否已经存在 
      const index = state.cartList.findIndex(item => item.goods_id === payload.value.goods_id);
      if (index === -1) {
        // 不存在 push新的元素
        // 要自己设置一个购买数量进去   选中状态 
        state.cartList.push({ ...payload.value, nums: 1, checked: true });
      } else {
        // 存在
        // 存在 找到它 购买数量 ++
        state.cartList[index].nums++;
      }

      // 存一份到缓存中
      uni.setStorageSync("cartList", state.cartList);
    },
    // 商品的选中 取反功能 payload= {index}
    cartGoodsChecked(state, payload) {
      state.cartList[payload.index].checked = !state.cartList[payload.index].checked;
      uni.setStorageSync("cartList", state.cartList);
    },
    // 数量编辑  payload ={unit:1,index}  payload ={unit:-1,index}
    cartGoodsNumUpdate(state, payload) {
      state.cartList[payload.index].nums += payload.unit;
      uni.setStorageSync("cartList", state.cartList);
    },
    // 删除数组中的某个元素 根据下标来删除
    cartGoodsRemove(state, payload) {
      state.cartList.splice(payload.index, 1);
      uni.setStorageSync("cartList", state.cartList);
    },
    // 修改所有商品的选中状态 payload ={checked}
    cartAllGoodsChecked(state, payload) {
      state.cartList.forEach(item => item.checked = payload.checked);
      uni.setStorageSync("cartList", state.cartList);
    }
  },
  actions: {

  }
}